package com.example.springBoot.dao;

import java.util.List;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.example.springBoot.domain.Article;
import com.example.springBoot.domain.ArticleType;

public interface ArticleDao extends JpaRepository<Article, Long> {

	// 根据文章的Id查询一个文章的详情
	Article findById(Long id);

	// 查询文章的最前面的5篇文章
	List<Article> findTop5By();

	// 自动以的sql查询（本来是使用union做前一篇和下一篇的功能的，但是发现好像有点问题。做不了就放弃了）
	@Query(value = "(select * from article where id<?1 order by id desc limit 1) " + "union "
			+ "(select * from article where id>?1 limit 1);", nativeQuery = true)
	List<Article> findByNext(Long id);

	// 查询当前文章Id的下一条记录
	Article findTop1ByIdGreaterThan(Long id);

	// 查询当前文章Id的上一条记录
	Article findTop1ByIdLessThanOrderByIdDesc(Long id);

	// 查询最新添加的文章的前面8条并且按照文章添加的时间降序排序
	List<Article> findTop8ByOrderByRegTimeDesc();

	// 查询文章的的嘴前面的5条并且文章安装添加时间降序排序
	List<Article> findTop5ByOrderByRegTimeDesc();

	// 获取推荐的最新8条文章记录
	List<Article> findTop8ByRecommendOrderByRegTimeDesc(Long i);

	//根据文章类型分页获取该类型所有文章
	Page<Article> findByArticleType(ArticleType typeid, Pageable pageable);
	
	List<Article> findByArticleType(ArticleType articleType);

	List<Article> findTop8ByOrderByReadnumDesc();
}
